package com.afdor.rws.event;

import com.afdor.rws.annotation.extension.SPI;
import com.afdor.rws.event.channel.ChannelProvider;
import lombok.NonNull;

/**
 * 事件源配置信息
 *
 * @author 悭梵
 * @date Created in 2018-08-14 14:59
 */
@SPI("default")
public interface EventSource<T extends ChannelProvider> {

    /**
     * 事件队列名称
     *
     * @return
     */
    String getEventSourceName();

    /**
     * 设置事件队列名称
     *
     * @param eventSourceName
     * @return
     */
    EventSource<T> setEventSourceName(@NonNull String eventSourceName);

    /**
     * 事件执行通道
     *
     * @return
     */
    T getChannelProvider();

    /**
     * 设置执行通道
     *
     * @return
     */
    EventSource<T> setChannelProvider(@NonNull T channelProvider);
}
